package com.xxcxcxcx.xc_moremob.common.registers;

import com.xxcxcxcx.xc_moremob.Main;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.basemob.arrow_zombie.ArrowZombieEntity;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.basemob.arrow_zombie.ArrowZombieModel;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.basemob.crawling_zombie.CrawlingZombieEntity;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.basemob.crawling_zombie.CrawlingZombieModel;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.basemob.jinny_timi.JinnyTimiEntity;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.basemob.jinny_timi.JinnyTimiModel;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.basemob.rocket_zombie.RocketZombieEntity;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.basemob.rocket_zombie.RocketZombieModel;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.basemob.zombie.zombieEntity;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.basemob.zombie.zombieModel;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.bossmob.wizard.wizardEntity;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.bossmob.wizard.wizardModel;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.desertmob.husk.huskEntity;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.desertmob.husk.huskModel;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.desertmob.husk_arrow.husk_arrowEntity;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.desertmob.husk_arrow.husk_arrowModel;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.desertmob.husk_rocket.husk_rocketEntity;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.desertmob.husk_rocket.husk_rocketModel;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.desertmob.zombie_miner.zombie_minerEntity;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.desertmob.zombie_miner.zombie_minerModel;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.desertmob.zombie_miner_arrow.zombie_miner_arrowEntity;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.desertmob.zombie_miner_arrow.zombie_miner_arrowModel;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.forestmob.farm_zombie.FarmZombieEntity;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.forestmob.farm_zombie.FarmZombieModel;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.forestmob.zombie_awful.zombie_awfulEntity;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.forestmob.zombie_awful.zombie_awfulModel;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.forestmob.zombie_awful_arrow.zombie_awful_arrowEntity;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.forestmob.zombie_awful_arrow.zombie_awful_arrowModel;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.forestmob.zombie_blind.zombie_blindEntity;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.forestmob.zombie_blind.zombie_blindModel;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.forestmob.zombie_blind_arrow.zombie_blind_arrowEntity;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.forestmob.zombie_blind_arrow.zombie_blind_arrowModel;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.forestmob.zombie_wither.zombie_witherEntity;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.forestmob.zombie_wither.zombie_witherModel;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.forestmob.zombie_wither_arrow.zombie_wither_arrowEntity;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.forestmob.zombie_wither_arrow.zombie_wither_arrowModel;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.relicmob.husk_rocket_warts.husk_rocket_wartsEntity;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.relicmob.husk_rocket_warts.husk_rocket_wartsModel;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.savannamob.zombie_broken.zombie_brokenEntity;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.savannamob.zombie_broken.zombie_brokenModel;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.savannamob.zombie_digslow.zombie_digslowEntity;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.savannamob.zombie_digslow.zombie_digslowModel;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.savannamob.zombie_digslow_arrow.zombie_digslow_arrowEntity;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.savannamob.zombie_digslow_arrow.zombie_digslow_arrowModel;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.savannamob.zombie_swamp.zombie_swampEntity;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.savannamob.zombie_swamp.zombie_swampModel;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.savannamob.zombie_swamp_arrow.zombie_swamp_arrowEntity;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.savannamob.zombie_swamp_arrow.zombie_swamp_arrowModel;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.swampmob.drowned.DrownedEntity;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.swampmob.drowned.DrownedModel;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.taigamob.yeti_zombie.yeti_zombieEntity;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.taigamob.yeti_zombie.yeti_zombieModel;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.taigamob.zombie_north.zombie_northEntity;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.taigamob.zombie_north.zombie_northModel;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.taigamob.zombie_north_arrow.zombie_north_arrowEntity;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.taigamob.zombie_north_arrow.zombie_north_arrowModel;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.taigamob.zombie_north_rocket.zombie_north_rocketEntity;
import com.xxcxcxcx.xc_moremob.common.entities.common_mob.taigamob.zombie_north_rocket.zombie_north_rocketModel;
import com.xxcxcxcx.xc_moremob.common.entities.monster.models.*;
import com.xxcxcxcx.xc_moremob.common.entities.monster.realization.*;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.MobCategory;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.RegistryObject;

public class EntityRegister {
    public static final DeferredRegister<EntityType<?>> ENTITY_TYPES = DeferredRegister.create(ForgeRegistries.ENTITIES, Main.MOD_ID);
    //近战基本
    public static final RegistryObject<EntityType<MeleeBasicEntity>> MELEE_BASIC = ENTITY_TYPES.register(MeleeBasicModel.name,
            () -> EntityType.Builder.of(MeleeBasicEntity::new, MobCategory.MONSTER).sized(1f,1.8f).setTrackingRange(30)
                    .build(new ResourceLocation(Main.MOD_ID, MeleeBasicModel.name).toString()));
    //飞行远程基本
    public static final RegistryObject<EntityType<FlyRemoteBasicEntity>> FLY_REMOTE_BASIC = ENTITY_TYPES.register(FlyRemoteBasicModel.name,
            () -> EntityType.Builder.of(FlyRemoteBasicEntity::new, MobCategory.MONSTER).sized(3f,5.4f).setTrackingRange(30)
                    .build(new ResourceLocation(Main.MOD_ID, FlyRemoteBasicModel.name).toString()));
    public static final RegistryObject<EntityType<RemoteBasicEntity>> REMOTE_BASIC = ENTITY_TYPES.register(RemoteBasicModel.name,
            () -> EntityType.Builder.of(RemoteBasicEntity::new, MobCategory.MONSTER).sized(1f,1.8f).setTrackingRange(30)
                    .build(new ResourceLocation(Main.MOD_ID, RemoteBasicModel.name).toString()));
    public static final RegistryObject<EntityType<WitchBasicEntity>> WITCH_BASIC = ENTITY_TYPES.register(WitchBasicModel.name,
            () -> EntityType.Builder.of(WitchBasicEntity::new, MobCategory.MONSTER).sized(1f,1.8f).setTrackingRange(30)
                    .build(new ResourceLocation(Main.MOD_ID, WitchBasicModel.name).toString()));
    public static final RegistryObject<EntityType<FlyMeleeBasicEntity>> FLY_MELEE_BASIC = ENTITY_TYPES.register(FlyMeleeBasicModel.name,
            () -> EntityType.Builder.of(FlyMeleeBasicEntity::new, MobCategory.MONSTER).sized(1f,1.8f).setTrackingRange(30)
                    .build(new ResourceLocation(Main.MOD_ID, FlyMeleeBasicModel.name).toString()));
    public static final RegistryObject<EntityType<SkillBasicEntity>> SKILL_BASIC = ENTITY_TYPES.register(SkillBasicModel.name,
            () -> EntityType.Builder.of(SkillBasicEntity::new, MobCategory.MONSTER).sized(1f,1.8f).setTrackingRange(30)
                    .build(new ResourceLocation(Main.MOD_ID, SkillBasicModel.name).toString()));
    public static final RegistryObject<EntityType<FarmZombieEntity>> Farm_Zombie = ENTITY_TYPES.register(FarmZombieModel.name,
            () -> EntityType.Builder.of(FarmZombieEntity::new, MobCategory.MONSTER).sized(1f,1.8f).setTrackingRange(30)
                    .build(new ResourceLocation(Main.MOD_ID, FarmZombieModel.name).toString()));
    public static final RegistryObject<EntityType<ArrowZombieEntity>> Arrow_Zombie = ENTITY_TYPES.register(ArrowZombieModel.name,
            () -> EntityType.Builder.of(ArrowZombieEntity::new, MobCategory.MONSTER).sized(1f,1.8f).setTrackingRange(30)
                    .build(new ResourceLocation(Main.MOD_ID, ArrowZombieModel.name).toString()));
    public static final RegistryObject<EntityType<RocketZombieEntity>> Rocket_Zombie = ENTITY_TYPES.register(RocketZombieModel.name,
            () -> EntityType.Builder.of(RocketZombieEntity::new, MobCategory.MONSTER).sized(1f,1.8f).setTrackingRange(30)
                    .build(new ResourceLocation(Main.MOD_ID, RocketZombieModel.name).toString()));
    public static final RegistryObject<EntityType<JinnyTimiEntity>> Jinny_Timi = ENTITY_TYPES.register(JinnyTimiModel.name,
            () -> EntityType.Builder.of(JinnyTimiEntity::new, MobCategory.CREATURE).sized(1f,1.8f).setTrackingRange(30)
                    .build(new ResourceLocation(Main.MOD_ID, JinnyTimiModel.name).toString()));
    public static final RegistryObject<EntityType<DrownedEntity>> Drowned = ENTITY_TYPES.register(DrownedModel.name,
            () -> EntityType.Builder.of(DrownedEntity::new, MobCategory.MONSTER).sized(1f,1.8f).setTrackingRange(30)
                    .build(new ResourceLocation(Main.MOD_ID, DrownedModel.name).toString()));

    public static final RegistryObject<EntityType<CrawlingZombieEntity>> CrawlingZombie = ENTITY_TYPES.register(CrawlingZombieModel.name,
            () -> EntityType.Builder.of(CrawlingZombieEntity::new, MobCategory.MONSTER).sized(1.3f,0.8f).setTrackingRange(30)
                    .build(new ResourceLocation(Main.MOD_ID, CrawlingZombieModel.name).toString()));
    public static final RegistryObject<EntityType<husk_arrowEntity>> husk_arrow = ENTITY_TYPES.register(husk_arrowModel.name,
            () -> EntityType.Builder.of(husk_arrowEntity::new, MobCategory.MONSTER).sized(1f,1.8f).setTrackingRange(30)
                    .build(new ResourceLocation(Main.MOD_ID, husk_arrowModel.name).toString()));
    public static final RegistryObject<EntityType<yeti_zombieEntity>> yeti_zombie = ENTITY_TYPES.register(yeti_zombieModel.name,
            () -> EntityType.Builder.of(yeti_zombieEntity::new, MobCategory.MONSTER).sized(1f,1.8f).setTrackingRange(30)
                    .build(new ResourceLocation(Main.MOD_ID, yeti_zombieModel.name).toString()));
    public static final RegistryObject<EntityType<zombie_brokenEntity>> zombie_broken = ENTITY_TYPES.register(zombie_brokenModel.name,
            () -> EntityType.Builder.of(zombie_brokenEntity::new, MobCategory.MONSTER).sized(1f,1.8f).setTrackingRange(30)
                    .build(new ResourceLocation(Main.MOD_ID, zombie_brokenModel.name).toString()));
    public static final RegistryObject<EntityType<zombie_minerEntity>> zombie_miner = ENTITY_TYPES.register(zombie_minerModel.name,
            () -> EntityType.Builder.of(zombie_minerEntity::new, MobCategory.MONSTER).sized(1f,1.8f).setTrackingRange(30)
                    .build(new ResourceLocation(Main.MOD_ID, zombie_minerModel.name).toString()));
    public static final RegistryObject<EntityType<zombie_miner_arrowEntity>> zombie_miner_arrow = ENTITY_TYPES.register(zombie_miner_arrowModel.name,
            () -> EntityType.Builder.of(zombie_miner_arrowEntity::new, MobCategory.MONSTER).sized(1f,1.8f).setTrackingRange(30)
                    .build(new ResourceLocation(Main.MOD_ID, zombie_miner_arrowModel.name).toString()));
    public static final RegistryObject<EntityType<zombie_north_arrowEntity>> zombie_north_arrow = ENTITY_TYPES.register(zombie_north_arrowModel.name,
            () -> EntityType.Builder.of(zombie_north_arrowEntity::new, MobCategory.MONSTER).sized(1f,1.8f).setTrackingRange(30)
                    .build(new ResourceLocation(Main.MOD_ID, zombie_north_arrowModel.name).toString()));
    public static final RegistryObject<EntityType<zombie_north_rocketEntity>> zombie_north_rocket = ENTITY_TYPES.register(zombie_north_rocketModel.name,
            () -> EntityType.Builder.of(zombie_north_rocketEntity::new, MobCategory.MONSTER).sized(1f,1.8f).setTrackingRange(30)
                    .build(new ResourceLocation(Main.MOD_ID, zombie_north_rocketModel.name).toString()));
    public static final RegistryObject<EntityType<wizardEntity>> wizard = ENTITY_TYPES.register(wizardModel.name,
            () -> EntityType.Builder.of(wizardEntity::new, MobCategory.MONSTER).sized(1f,1.8f).setTrackingRange(30)
                    .build(new ResourceLocation(Main.MOD_ID, wizardModel.name).toString()));
    public static final RegistryObject<EntityType<zombie_northEntity>> zombie_north = ENTITY_TYPES.register(zombie_northModel.name,
            () -> EntityType.Builder.of(zombie_northEntity::new, MobCategory.MONSTER).sized(1f,1.8f).setTrackingRange(30)
                    .build(new ResourceLocation(Main.MOD_ID, zombie_northModel.name).toString()));
    public static final RegistryObject<EntityType<zombie_awfulEntity>> zombie_awful = ENTITY_TYPES.register(zombie_awfulModel.name,
            () -> EntityType.Builder.of(zombie_awfulEntity::new, MobCategory.MONSTER).sized(1f,1.8f).setTrackingRange(30)
                    .build(new ResourceLocation(Main.MOD_ID, zombie_awfulModel.name).toString()));
    public static final RegistryObject<EntityType<zombie_digslowEntity>> zombie_digslow = ENTITY_TYPES.register(zombie_digslowModel.name,
            () -> EntityType.Builder.of(zombie_digslowEntity::new, MobCategory.MONSTER).sized(1f,1.8f).setTrackingRange(30)
                    .build(new ResourceLocation(Main.MOD_ID, zombie_digslowModel.name).toString()));
    public static final RegistryObject<EntityType<zombie_blindEntity>> zombie_blind = ENTITY_TYPES.register(zombie_blindModel.name,
            () -> EntityType.Builder.of(zombie_blindEntity::new, MobCategory.MONSTER).sized(1f,1.8f).setTrackingRange(30)
                    .build(new ResourceLocation(Main.MOD_ID, zombie_blindModel.name).toString()));
    public static final RegistryObject<EntityType<zombie_witherEntity>> zombie_wither = ENTITY_TYPES.register(zombie_witherModel.name,
            () -> EntityType.Builder.of(zombie_witherEntity::new, MobCategory.MONSTER).sized(1f,1.8f).setTrackingRange(30)
                    .build(new ResourceLocation(Main.MOD_ID, zombie_witherModel.name).toString()));
    public static final RegistryObject<EntityType<zombie_swampEntity>> zombie_swamp = ENTITY_TYPES.register(zombie_swampModel.name,
            () -> EntityType.Builder.of(zombie_swampEntity::new, MobCategory.MONSTER).sized(1f,1.8f).setTrackingRange(30)
                    .build(new ResourceLocation(Main.MOD_ID, zombie_swampModel.name).toString()));
    public static final RegistryObject<EntityType<zombie_awful_arrowEntity>> zombie_awful_arrow = ENTITY_TYPES.register(zombie_awful_arrowModel.name,
            () -> EntityType.Builder.of(zombie_awful_arrowEntity::new, MobCategory.MONSTER).sized(1f,1.8f).setTrackingRange(30)
                    .build(new ResourceLocation(Main.MOD_ID, zombie_awful_arrowModel.name).toString()));
    public static final RegistryObject<EntityType<zombie_digslow_arrowEntity>> zombie_digslow_arrow = ENTITY_TYPES.register(zombie_digslow_arrowModel.name,
            () -> EntityType.Builder.of(zombie_digslow_arrowEntity::new, MobCategory.MONSTER).sized(1f,1.8f).setTrackingRange(30)
                    .build(new ResourceLocation(Main.MOD_ID, zombie_digslow_arrowModel.name).toString()));
    public static final RegistryObject<EntityType<zombie_blind_arrowEntity>> zombie_blind_arrow = ENTITY_TYPES.register(zombie_blind_arrowModel.name,
            () -> EntityType.Builder.of(zombie_blind_arrowEntity::new, MobCategory.MONSTER).sized(1f,1.8f).setTrackingRange(30)
                    .build(new ResourceLocation(Main.MOD_ID, zombie_blind_arrowModel.name).toString()));
    public static final RegistryObject<EntityType<zombie_wither_arrowEntity>> zombie_wither_arrow = ENTITY_TYPES.register(zombie_wither_arrowModel.name,
            () -> EntityType.Builder.of(zombie_wither_arrowEntity::new, MobCategory.MONSTER).sized(1f,1.8f).setTrackingRange(30)
                    .build(new ResourceLocation(Main.MOD_ID, zombie_wither_arrowModel.name).toString()));
    public static final RegistryObject<EntityType<zombie_swamp_arrowEntity>> zombie_swamp_arrow = ENTITY_TYPES.register(zombie_swamp_arrowModel.name,
            () -> EntityType.Builder.of(zombie_swamp_arrowEntity::new, MobCategory.MONSTER).sized(1f,1.8f).setTrackingRange(30)
                    .build(new ResourceLocation(Main.MOD_ID, zombie_swamp_arrowModel.name).toString()));
    public static final RegistryObject<EntityType<zombieEntity>> zombie = ENTITY_TYPES.register(zombieModel.name,
            () -> EntityType.Builder.of(zombieEntity::new, MobCategory.MONSTER).sized(1f,1.8f).setTrackingRange(30)
                    .build(new ResourceLocation(Main.MOD_ID, zombieModel.name).toString()));
    public static final RegistryObject<EntityType<husk_rocketEntity>> husk_rocket = ENTITY_TYPES.register(husk_rocketModel.name,
            () -> EntityType.Builder.of(husk_rocketEntity::new, MobCategory.MONSTER).sized(1f,1.8f).setTrackingRange(30)
                    .build(new ResourceLocation(Main.MOD_ID, husk_rocketModel.name).toString()));
    public static final RegistryObject<EntityType<huskEntity>> husk = ENTITY_TYPES.register(huskModel.name,
            () -> EntityType.Builder.of(huskEntity::new, MobCategory.MONSTER).sized(1f,1.8f).setTrackingRange(30)
                    .build(new ResourceLocation(Main.MOD_ID, huskModel.name).toString()));
    public static final RegistryObject<EntityType<husk_rocket_wartsEntity>> husk_rocket_warts = ENTITY_TYPES.register(husk_rocket_wartsModel.name,
            () -> EntityType.Builder.of(husk_rocket_wartsEntity::new, MobCategory.MONSTER).sized(1.5f,2.7f).setTrackingRange(30)
                    .build(new ResourceLocation(Main.MOD_ID, husk_rocket_wartsModel.name).toString()));

}
